

package ficheros;
import java.io.*;

public class TRABAJOFICHEROS {

    static final int MODO_LECTURA = 0;
    static final int MODO_ESCRITURA = 1;

    //para poder leer del fichero fr y br
    private FileReader fr;
    private BufferedReader br;
    //para poder escribir en el fichero fw y bw
    private FileWriter fw;
    private BufferedWriter bw;

    //para indicar al analizador léxico cuando ha llegado al final del fichero
    private int buff;
    private int modo; //modo en el que trabaja el fichero L/W

    private String rutaArchivoObj;//util parapoder borrarlo si fuera necesario
    private boolean bError;//detecta si ha habido algún error al abrir el archivo
    //1er constructor para leer
    public TRABAJOFICHEROS(BufferedReader brd, int iModo)
    {
        this.br=brd;
        this.bError=false;
    }
    public TRABAJOFICHEROS(BufferedWriter brw, int iModo)
    {
        this.bw=brw;
        this.bError=false;
    }
    public TRABAJOFICHEROS(BufferedReader brd)
    {
        this.br=brd;
        this.bError=false;
    }
    public TRABAJOFICHEROS(String sNombre, int iModo)
    {
        this.modo=iModo;
        this.bError=false;
        if (this.modo==MODO_LECTURA)
        {
           try{
            this.fr=new FileReader(sNombre);
            this.br=new BufferedReader(this.fr);
            }
            catch (Exception e)
            {
                this.bError=true;
            }
        }else
        {
            try
            {
            this.fw=new FileWriter(sNombre);
            this.bw=new BufferedWriter(this.fw);
            }catch (Exception e)
            {
                this.bError=true;
            }
        }
    }
     public int getBuff()
        {
         if (!bError)
             return this.buff;
         else
             return -1;
        }
     public char siguienteCar()
     {
        char car=' ';
        try
        {
            this.buff=this.br.read();
            car=(char)this.buff;
        }catch (Exception e)
        {
            this.bError=true;
        }
       return car;
     }
     //escribe en el fichero la cadena recibida como parámetro
    public void escribe(String sCadena)
    {
        try
        {
            this.bw.write(sCadena);
        }catch (Exception e)
        {
            e.printStackTrace();
        }
    }
    public void cierraArchivo()
    {
        if (this.modo==MODO_LECTURA)
        {
            try {
                this.br.close();
            }catch (Exception e) {
                this.bError = true;
            }
        }else
        {
            try {
                this.bw.close();
            } catch (Exception e) {
                this.bError = true;
            }
        }
    }
    public boolean getError()
    {
        return bError;
    }
}
